#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <limits.h>

typedef struct
{
    long int nType;
    char szText[256];
    char ID[4];
} MSG;

int main()
{
    key_t Ikey;
    int nMsgId;
    if ((Ikey = ftok("/etc/profile", 1)) == -1)
    {
        perror("ftok");
        exit(1);
    }
    if ((nMsgId = msgget(Ikey, IPC_CREAT | 0666)) == -1)
    {
        perror("ftok");
        exit(2);
    }
    printf("create message queue, msgid=%d\n", nMsgId);
    
    MSG msg;
	if (msgrcv(nMsgId, (void *)&msg, sizeof(msg.szText), 2L, 0) < 0) // �Ӷ��н�����Ϣ
	{
		perror("msgrcv");
	}
	else
	{
		printf("msg=%s\n", msg.szText);
	}
	return 0;
}
